#!/bin/bash

###############################################
# 接口状态监控脚本
# 名称：monitor_interface_status.sh
# 版本：1.0
# 作者：YourName
# 日期：2025-03-22
# 描述：
#   实时监控网络接口状态变化（如断开或重连）。
#   输出状态变化日志到指定文件。
#   支持通过系统通知进行状态提醒。
###############################################

LOG_FILE="$(dirname "$0")/interface_status.log"

# 显示标题信息
show_title() {
    echo "=============================="
    echo " 网络接口状态监控脚本 "
    echo "=============================="
}

# 检查并安装所需工具
check_tool() {
    if ! command -v "$1" &> /dev/null; then
        echo "$1 未安装，正在自动安装..."
        sudo apt update && sudo apt install -y "$1"
        if ! command -v "$1" &> /dev/null; then
            echo "$1 安装失败，请手动安装。"
            exit 1
        fi
        echo "$1 安装成功！"
    fi
}

# 发送系统通知
send_notification() {
    notify-send "网络接口状态变化" "$1"
}

# 监控接口状态
monitor_interface() {
    echo "开始监控接口状态..."
    ip monitor link | while read -r line; do
        timestamp=$(date "+%Y-%m-%d %H:%M:%S")
        echo "[$timestamp] $line" | tee -a "$LOG_FILE"
        send_notification "$line"
    done
}

# 主程序
show_title
check_tool "ip"
check_tool "notify-send"
echo "日志文件：$LOG_FILE"
monitor_interface
